/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.ove.openmath.jome.model.processor;

/**
 *
 * @author Mr.Sam
 */
import fr.ove.openmath.jome.model.Formula;

/**
* The interface to implement if a class wants to be considered
* as a processor of the model of the formula (@see fr.ove.openmath.jome.model.Formula)
*
* @author © 2000 DIRAT Laurent
* @version 1.0  16/08/2000
*/
public interface Processor {
    /**
    * Does processing.
    */
    public void doProcess();
    
    /**
    * Sets the formula to processs
    */
    public void setFormula(Formula formula);
    
    /**
    * Returns the formula to process.
    */
    public Formula getFormula();
    
    /**
    * Specifies if, after processing the formula, the display has to be
    * updated.
    * @param updateDisplay <CODE>true</CODE> if the display needs update.
    * <CODE>false</CODE> otherwise.
    */
    public void setUpdateDisplay(boolean updateDisplay);
    
    /**
    * Checks if, after processing the formula, the display has to be
    * updated.
    * @returns <CODE>true</CODE> if the display needs update.
    * <CODE>false</CODE> otherwise.
    */
    public boolean getUpdateDisplay();
    
    /**
    * Initialisation of the processor.
    */
    public void init();
    
    /**
    * Sets the processing to execute.
    * @param processingId the processing Id.
    */
    public void setProcessingId(int processingId);
    
    /**
    * Returns the current processing to execute.
    */
    public int getProcessingId();
    
    /**
    * Sets the level from which the processing starts.
    * @param level the level.
    */
    public void setLevel(int level);
    
    /**
    * Returns the level from which the processing starts.
    */
    public int getLevel();
}